The terms “memory system” and “storage system” are generally used interchangeably herein. Existing terminology is changing as more of the on-line and near-line data of large systems is being stored in solid state devices such as FLASH memory arrays or solid state disks (SSD) rather than rotating disk drives. A storage system was considered to be primarily disk based and having data retrieval and writing latencies dominated by the mechanical performance of the disk drive. Often the disks were connected to the processor through a network connection. Memory systems were considered to be either directly attached to the processor requiring the data, or having sufficiently low latency as to cause little bottleneck in the processing speed
As the latency of FLASH memory arrays may be considerably less than that of disks, while the storage capacity and economics of such arrays is beginning to compete directly with disk-based systems, the distinction between a “memory system” and a “storage system” is somewhat blurred. Here we use the terms to describe a solid-state memory system, whether connected to the using server directly or through some network connection.
The term SSD may mean a plugable module having a form factor and interface protocol that is compatible with an industry standard. As such industry standards change, from time-to-time, there is no suggestion herein that the characteristics of a SSD, either in a physical or electrical sense, would not be similarly altered by a manufacturer. The term SSD may also be used to describe any semiconductor memory system having persistent storage characteristics, regardless of the memory technology, form factor, or interface protocol as such devices may represent a stage of evolution of industry standards or storage technology.
The term “logical address” when used, for example, as the logical block address (LBA) should be understood as the address space presented to or used by a user program, server, file system, or the like, to represent the data that is stored in the memory system. The term “physical address” when used, for example, as the physical block address (PBA) should be understood as the address space presented by or used by the memory system so as to locate the data that is stored in the memory system. The terms LBA and PBA may represent the end points of a process having multiple levels of indirection such that the LBA and the information stored in the PBA are uniquely related thereby.
In a SSD having FLASH memory as the persistent storage on non-volatile storage, the relationship between the logical block address (LBA) as furnished to the SSD by a user and the physical block address (PBA) where the information is stored in the SSD may be maintained by a function known as the flash translation layer (FTL). An indirection table, such as a L2P table may be stored at the SSD providing for this relationship, which may change autonomously as the FTL performs such overhead functions as garbage collection and wear leveling, as is known in the art. As such, the physical address space is not exposed to the user.
The term PBA may be used as an acronym for the physical (block) address in a memory system where the data referenced by an LBA is stored. Typically a page of data having an LBA is associated with a physical page having the same data size as the LBA data size and associated metadata. The metadata associated with the LBA and the PBA may share some common attributes, but may serve functions associated with either the logical or stored aspects of the data and may therefore have different sizes and fields. Metadata of the logical and physical representations of the data may have some common attributes that are stored or computed so as to validate access to the data, ensure the validity of the data, or the like.
Confusion may arise as there is an additional use of the term “block” in describing the operation of a FLASH memory system. Architecturally a FLASH memory circuit may be comprised of a plurality of physical pages of a size, (e.g. 2 KB), each storing the corresponding quantity of data referenced by a LBA and organized as “blocks”. A block may comprise, for example, 256 pages. NAND FLASH memory circuits that are currently available have the property that individual pages of a block cannot be erased; the whole block is erased if any of the pages of the block are to be erased. Moreover, the pages of each block are written in monotonic order and if a page is skipped, the page cannot be subsequently written prior to erasure of the entire block. When a block comprising a plurality of pages is being described herein, a person of skill in the art would understand the distinction between such a block comprising a fixed multiple of pages, and the PBA representing a specific page within a block. In some contexts, the term “physical address” is used and this term may refer to either a block or a PBA. Blocks comprising pages of physical addresses may be described as having a block address or block number and such addresses may be pre-assigned or be virtualized. In some situations, the physical address may comprise, for example, a block number and a physical page address within the block.
Inevitably the terminology of legacy disk technology and that of solid state memory systems, such as a FLASH memory array conflicts, particularly in the definition of sector, page, block and the like. So, sectors have a logical block address (LBA) when the storage is visualized from a legacy standpoint, as is typical of most existing virtualization approaches, whereas internal operations of the solid state memory system may treat a block as a large number of pages (e.g., 128 LBAs) each page comprising a number (e.g., 4) of sectors having a size (e.g., 512b). Just as the firmware or software of the memory system needs to accommodate these constructs, a person of skill in the art would appreciate the meaning and use of the terminology at the present state of the art and would adapt the concepts accordingly.
FLASH memory devices may be characterized, for example, as single level cell (SLC), multiple level cell (MLC) or triple level cell (TLC), representing the storage of one bit, two bits or three or more bits of data in each cell of the memory device. While the speeds, storage capacity, and durability of the devices differ, the disclosure herein is applicable to any of these types of memory as well as other solid state memory technologies that exist or may subsequently be developed.